/**
 * 获取状态栏高度
 * @returns {Number} 状态栏高度
 */
export const getStatusBarHeight = () => uni.getSystemInfoSync().statusBarHeight /*  || 15 */

/**
 * 计算 胶囊按钮 的高度
 * @returns {Number} 胶囊按钮高度
 */
export const getMenuButtonHeight = () => {
  if (uni.getMenuButtonBoundingClientRect) {
    let { top, height } = uni.getMenuButtonBoundingClientRect()
    return height + (top - getStatusBarHeight()) * 2
  } else {
    return 0
  }
}
/**
 * 计算 状态栏 + 胶囊按钮 的高度
 * @returns {Number} 状态栏 + 胶囊按钮
 */
export const getNavBarHeight = () => getStatusBarHeight() + getMenuButtonHeight()

/**
 * 获取胶囊按钮信息
 * @param {width | height | top | right | bottom | left} option 
// width	宽度
// height	高度
// top	上边界坐标
// right	右边界坐标
// bottom	下边界坐标
// left	左边界坐标
 * @returns {Number} 胶囊按钮信息
 */
export function getMenuButton(option) {
  if (uni.getMenuButtonBoundingClientRect) {
    return uni.getMenuButtonBoundingClientRect()[option]
  } else {
    return 0
  }
}

// export const getLeftIconLeft = () => {
//   // #ifdef MP-MP-TOUTIAO
//   let {
//     leftIcon: { left, width },
//   } = tt.getCustomButtonBoundingClientRect()
//   return 0
//   // #endif
// }

/**
 * 获取网络状态
 * @returns {Boolean} Promise对象 true:有网络，false:无网络
 */
export function isNetWork() {
  return new Promise((resolve) => {
    uni.getNetworkType({
      success: function (res) {
        if (res.networkType === 'none') {
          // uni.showToast({
          //   title: '无网络',
          //   icon: 'none',
          // })
          resolve(false)
        } else {
          resolve(true)
        }
      },
    })
  })
}

/**
 * 立即执行一次后定时执行
 * @param {Function} func 执行的函数
 * @param {Number} delay 时间间隔
 * @param  {...any} args 参数
 * @returns setInterval 的 ID
 */
export function setIntervalImmediate(func, delay, ...args) {
  // 立即执行一次
  func.apply(null, args)
  // 返回 setInterval 的 ID 以便后续清除
  return setInterval(func, delay, ...args)
}
